Mixer: prevent duplicate app identities and routing resets - #61
Merged
Conversation
Use the owning PipeWire client for application metadata missing from playback nodes. Normalize executable identities consistently at discovery, restore and app commands. Prefer an existing canonical override over a stale alias so a duplicate entry cannot move a game back to System after restart. Add captured-graph and override migration regressions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Balatro registered twice: its PipeWire client produced the identity
balatro, assigned to Game, while its playback node omitted the process binary and producedBalatro.exe, assigned to System. The saved alias could also overwrite the canonical routing choice when settings were restored.Playback metadata now falls back to the owning client from the same graph snapshot. Direct Windows executable identities use the same normalization as Wine/Proton identities. Restoring overrides prefers an existing canonical entry over a conflicting legacy alias, and assigning or forgetting an executable alias addresses the canonical app. Saved inactive entries show the resolved override as well.
Validation:
OpenXLR_ch_system. After deployment and daemon restart, ten consecutive checks showed one activebalatroentry and its actual playback stream onOpenXLR_ch_game. Saved settings contain one canonical Balatro row and override. Existing insert definitions and parameters were preserved, and inserts reported no errors.The change affects application discovery and routing. Different native binaries retain distinct identities even when their display labels match.